/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package appbenedictoxvi;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

/**
 *
 * @author David
 */
public class AdmVenta {
    Validaciones objVal = new Validaciones();
    private ArrayList<Venta> lstCabecera;

    public AdmVenta() {
        lstCabecera = new ArrayList<Venta>();
    }
    
    public ArrayList<Venta> getlstCabecera(){
        return lstCabecera;
    }
    
    public void setlstCabecera(ArrayList<Venta> lstCabecera){
        this.lstCabecera = lstCabecera;
    }
    
    public void registrarPagoConBoleta(int idnrofactura, Cliente cliente, String fechaemision, 
            String empresa, String fechavencimiento, String fechapago, String concepto, 
            String estado, String observacion, String moneda, String tipodocumento, 
            double subtotal, double igv, double total, int cantidad, ArrayList<Servicio> servicios) throws BusinessException{
        
        //Validacion de datos
        validarDatos(idnrofactura, concepto, fechaemision, fechavencimiento, moneda);
        
        Venta venta = new Venta();
        venta.setIdnrofactura(idnrofactura);
        venta.setCliente(cliente);
        venta.setFechaemision(fechaemision);
        venta.setEmpresa(empresa);
        venta.setFechavencimiento(fechavencimiento);
        venta.setFechapago(fechapago);
        venta.setConcepto(concepto);
        venta.setEstado(estado);
        venta.setObservacion(observacion);
        venta.setMoneda(moneda);
        venta.setTipodocumento(tipodocumento);
        venta.setSubtotal(subtotal);
        venta.setIgv(igv);
        venta.setTotal(total);
        
        for (Servicio servicio : servicios) {
            venta.adicionarItem(cantidad, servicio);
        }
        lstCabecera.add(venta);
    }
    
    private void validarDatos(int idnrofactura, String concepto, String fechaemision, 
            String fechavencimiento, String moneda)throws BusinessException{
        validarDatosMandatorios(idnrofactura, concepto, fechaemision, fechavencimiento, moneda);
        //validarDuplicidad(idnrofactura);
    }

//    private void validarDuplicidad(int idnrofactura) throws BusinessException{
//        if (buscarVenta(idnrofactura) != null) {
//            String mensaje = "Error: " + idnrofactura + " ya existe";
//            //Crea la excepcion y lanzarlo
//            throw new BusinessException(mensaje);
//        }
//    }

    public Venta buscarVenta(int idnrofactura) {
        for (Venta venta : lstCabecera) {
            if (String.valueOf(venta.getIdnrofactura()).equals(idnrofactura)) {
                return venta;
            }
        }
        return null;
    }
    
    
    private void validarDatosMandatorios(int idnrofactura, String concepto, String fechaemision, 
            String fechavencimiento, String moneda) throws BusinessException{
        String mensaje = "";
        
        if (!objVal.isDigits(String.valueOf(idnrofactura))) {
            mensaje += "Numero de Venta no puede ser vacio o nulo";
        }
        if (!objVal.isSet(concepto)) {
            mensaje += "Concepto no puede ser vacio o nulo";
        }
        if (!objVal.isSet(fechaemision)) {
            mensaje += "Fecha de Emision no puede ser vacio o nulo";
        }
        if (!objVal.isSet(fechavencimiento)) {
            mensaje += "Fecha de Vencimiento no puede ser vacio o nulo";
        }
        if (!objVal.isSet(moneda)) {
            mensaje += "Moneda no puede ser vacio o nulo";
        }
        
        if (objVal.isSet(mensaje)) {
            throw new BusinessException(mensaje);
        }
    }


    public ArrayList<Venta> filtroVentaListar(String concepto, int idnrofactura, String fechaemision, 
            String empresa, String fechavencimiento, String fechapago, String estado) {
        
    ArrayList<Venta> filtros = new ArrayList<Venta>();
    //filtros = new ArrayList<Cliente>();

    for (Venta objVen : lstCabecera) {
        if (objVen.getConcepto().contains(concepto) &&
                //String.valueOf(vaobjVen.getIdnrofactura()).contains(apellidopaterno) &&
                objVen.getFechaemision().contains(fechaemision) &&
                objVen.getEmpresa().contains(empresa) &&
                objVen.getFechavencimiento().contains(fechavencimiento) &&
                objVen.getFechapago().contains(fechapago) &&
                objVen.getEstado().contains(estado)) {
            filtros.add(objVen);
        }
    }
    return filtros;
    
    }
    
}
